#include <iostream>

#include "d2_thread_pool.hpp"

class UnmoveableTask
{
public:
    UnmoveableTask()
    {
    }

    // 不可移动
    UnmoveableTask(UnmoveableTask &&) = delete;

    // 但提供了拷贝，因此在需要移动时，会使用拷贝代替，功能无碍，只是性能变差
    UnmoveableTask(UnmoveableTask const &)
    {
    }

    void operator()()
    {
        std::cout << 99 << std::endl;
    }
};

int main([[maybe_unused]] int argc, [[maybe_unused]] char **argv)
{
    d2::ThreadPool pool;

    // 使用示例
    UnmoveableTask task;

    pool.Submit(task); // 编译错误：数组成员导致不可移动
}